5ff8c8c74e58a9df51be059908a064a43a67c50d,plugins/sonar-cpd-plugin/src/main/java/org/sonar/plugins/cpd/SonarEngine.java,SonarEngine,analyse,#Project#SensorContext#,90
Before Change
for (InputFile inputFile : inputFiles) {
Resource resource = getResource(inputFile);
List<Block> fileBlocks = Lists.newArrayList(index.getByResourceId(getFullKey(project, resource)));
List<CloneGroup> clones = OriginalCloneDetectionAlgorithm.detect(index, fileBlocks);
if (!clones.isEmpty()) {
// Save
After Change
.toString();
}
public void analyse(Project project, SensorContext context) {
List<InputFile> inputFiles = project.getFileSystem().mainFiles(project.getLanguageKey());
if (inputFiles.isEmpty()) {
return;
}
// Create index
final SonarCloneIndex index;
if (isCrossProject(project)) {
Logs.INFO.info("Enabled cross-project analysis");
index = new SonarCloneIndex(new DbCloneIndex(dbSession, resourcePersister, project));
} else {
index = new SonarCloneIndex();
}
TokenChunker tokenChunker = JavaTokenProducer.build();
StatementChunker statementChunker = JavaStatementBuilder.build();
BlockChunker blockChunker = new BlockChunker(BLOCK_SIZE);
for (InputFile inputFile : inputFiles) {
Resource resource = getResource(inputFile);
String resourceKey = getFullKey(project, resource);
File file = inputFile.getFile();
TokenQueue tokenQueue = tokenChunker.chunk(file);
List<Statement> statements = statementChunker.chunk(tokenQueue);
List<Block> blocks = blockChunker.chunk(resourceKey, statements);
index.insert(resource, blocks);
}
// Detect
for (InputFile inputFile : inputFiles) {
Resource resource = getResource(inputFile);
String resourceKey = getFullKey(project, resource);
Collection<Block> fileBlocks = index.getByResource(resource, resourceKey);
List<CloneGroup> clones = OriginalCloneDetectionAlgorithm.detect(index, fileBlocks);